<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <h1 data-lake-id="gGFrn" id="gGFrn"><span data-lake-id="u086a0bf6" id="u086a0bf6">典型回答</span></h1>
  <p data-lake-id="u4b61e0cc" id="u4b61e0cc"><br></p>
  <p data-lake-id="ueef58a78" id="ueef58a78"><span data-lake-id="u66211f1c" id="u66211f1c">dubbo支持多种协议，主要由以下几个：</span></p>
  <p data-lake-id="ucaf6386f" id="ucaf6386f"><span data-lake-id="ud04aad42" id="ud04aad42">​</span><br></p>
  <ul list="uc56ad426" data-lake-index-type="true">
   <li fid="u6c9d21bb" data-lake-id="u8cd3caa3" id="u8cd3caa3"><span data-lake-id="ue9321f3e" id="ue9321f3e">1、dubbo 协议 (默认)</span></li>
  </ul>
  <ul list="uc56ad426" data-lake-indent="1" data-lake-index-type="true">
   <li fid="u6c9d21bb" data-lake-id="u01281a27" id="u01281a27"><span data-lake-id="u4d31b745" id="u4d31b745">默认就是走dubbo协议的，基于</span><span data-lake-id="u84998f40" id="u84998f40">hessian作为序列化协议</span><span data-lake-id="ub9c61ba2" id="ub9c61ba2">，单一长连接，TCP协议传输，NIO异步通信，适合大并发小数据量的服务调用，以及消费者远大于提供者，传输数据量很小（每次请求在100kb以内），但是并发量很高。</span></li>
  </ul>
  <p data-lake-id="u78a1792a" id="u78a1792a"><span data-lake-id="ubb925618" id="ubb925618">​</span><br></p>
  <ul list="u863c4817" data-lake-index-type="true">
   <li fid="u29f92e58" data-lake-id="u60f3eccb" id="u60f3eccb"><span data-lake-id="u8af871c1" id="u8af871c1">2、rmi 协议</span></li>
  </ul>
  <ul list="u863c4817" data-lake-indent="1" data-lake-index-type="true">
   <li fid="u29f92e58" data-lake-id="u488db476" id="u488db476"><span data-lake-id="ub7031533" id="ub7031533">采用JDK标准的rmi协议实现，传输参数和返回参数对象需要实现Serializable接口，使用java标准序列化机制，使用阻塞式短连接，传输数据包大小混合，消费者和提供者个数差不多，可传文件，传输协议TCP。</span></li>
  </ul>
  <p data-lake-id="u59df2e19" id="u59df2e19"><span data-lake-id="ua24ca4e1" id="ua24ca4e1">​</span><br></p>
  <ul list="uc1370894" data-lake-index-type="true">
   <li fid="u03c61961" data-lake-id="u40024ced" id="u40024ced"><span data-lake-id="uac1411eb" id="uac1411eb">3、hessian 协议</span></li>
  </ul>
  <ul list="uc1370894" data-lake-indent="1" data-lake-index-type="true">
   <li fid="u03c61961" data-lake-id="ufc49f9d8" id="ufc49f9d8"><span data-lake-id="ue6ef4cc9" id="ue6ef4cc9">集成Hessian服务，基于HTTP通讯，采用Servlet暴露服务，Dubbo内嵌Jetty作为服务器时默认实现，提供与Hession服务互操作。</span></li>
   <li fid="u03c61961" data-lake-id="u596c0634" id="u596c0634"><span data-lake-id="u6629cfaa" id="u6629cfaa">hessian序列化协议，多个短连接，同步HTTP传输，传入参数较大，提供者大于消费者，提供者压力较大，适用于文件的传输，一般较少用；</span></li>
  </ul>
  <p data-lake-id="ud7b5a1e7" id="ud7b5a1e7"><span data-lake-id="u67534454" id="u67534454">​</span><br></p>
  <ul list="uddf8cc98" data-lake-index-type="true">
   <li fid="ub60a382d" data-lake-id="ucd739fcb" id="ucd739fcb"><span data-lake-id="u3a5fb167" id="u3a5fb167">4、http 协议</span></li>
  </ul>
  <ul list="uddf8cc98" data-lake-indent="1" data-lake-index-type="true">
   <li fid="ub60a382d" data-lake-id="u492b7737" id="u492b7737"><span data-lake-id="u16b97112" id="u16b97112">基于Http表单提交的远程调用协议，使用Spring的HttpInvoke实现。</span></li>
  </ul>
  <p data-lake-id="u6dd3c1f4" id="u6dd3c1f4"><span data-lake-id="ub4f34f65" id="ub4f34f65">​</span><br></p>
  <ul list="ue9b605b4" data-lake-index-type="true">
   <li fid="u97048d8e" data-lake-id="ubd398b72" id="ubd398b72"><span data-lake-id="u23fdc95b" id="u23fdc95b">5、webservice 协议</span></li>
  </ul>
  <ul list="ue9b605b4" data-lake-indent="1" data-lake-index-type="true">
   <li fid="u97048d8e" data-lake-id="u58b4e08d" id="u58b4e08d"><span data-lake-id="u29d0ae2d" id="u29d0ae2d">基于WebService的远程调用协议，集成CXF实现，提供和原生WebService的互操作。</span></li>
  </ul>
  <p data-lake-id="ub95cfa68" id="ub95cfa68"><span data-lake-id="u4fa8b80a" id="u4fa8b80a">​</span><br></p>
  <ul list="u0a3cd9cd">
   <li fid="u684535f1" data-lake-id="u85b0db94" id="u85b0db94"><span data-lake-id="u1f08ab15" id="u1f08ab15">6、thrift 协议</span></li>
  </ul>
  <ul list="u0a3cd9cd" data-lake-indent="1">
   <li fid="u684535f1" data-lake-id="uef2f2d3c" id="uef2f2d3c"><span data-lake-id="uc6ed168e" id="uc6ed168e">当前 dubbo 支持的 thrift 协议是对 thrift 原生协议 的扩展，在原生协议的基础上添加了一些额外的头信息，比如 service name，magic number 等。</span></li>
  </ul>
  <p data-lake-id="ua35ed767" id="ua35ed767"><br></p>
  <ul list="u0a3cd9cd" start="2">
   <li fid="u684535f1" data-lake-id="ud20696e5" id="ud20696e5"><span data-lake-id="u60ec104a" id="u60ec104a">7、memcached 协议</span></li>
  </ul>
  <ul list="u0a3cd9cd" data-lake-indent="1">
   <li fid="u684535f1" data-lake-id="u111cbf73" id="u111cbf73"><span data-lake-id="u783d0f4c" id="u783d0f4c">基于 memcached实现的 RPC 协议。</span></li>
  </ul>
  <p data-lake-id="u79f9cd02" id="u79f9cd02"><span data-lake-id="u9eef36eb" id="u9eef36eb">​</span><br></p>
  <ul list="ua36ff343">
   <li fid="ua05efc8f" data-lake-id="ucb8b1e09" id="ucb8b1e09"><span data-lake-id="u0b7b5047" id="u0b7b5047">8、redis 协议</span></li>
  </ul>
  <ul list="ua36ff343" data-lake-indent="1">
   <li fid="ua05efc8f" data-lake-id="u6f610e4b" id="u6f610e4b"><span data-lake-id="ued04c5ee" id="ued04c5ee">基于 Redis实现的 RPC 协议。</span></li>
  </ul>
  <p data-lake-id="u431db2e0" id="u431db2e0"><span data-lake-id="u55096d5f" id="u55096d5f">​</span><br></p>
  <ul list="u948e9a7d">
   <li fid="u8548e46e" data-lake-id="u6d01a189" id="u6d01a189"><span data-lake-id="u1f53474b" id="u1f53474b">9、restful</span></li>
  </ul>
  <ul list="u948e9a7d" data-lake-indent="1">
   <li fid="u8548e46e" data-lake-id="u7e49867e" id="u7e49867e"><span data-lake-id="u1808830b" id="u1808830b">基于标准的Java REST API——JAX-RS 2.0（Java API for RESTful Web Services的简写）实现的REST调用支持</span></li>
  </ul>
  <p data-lake-id="u116178eb" id="u116178eb"><br></p>
 </body>
</html>